﻿using System;

namespace Rosetta
{
    public interface IConverter : IAccepts, IReturns
    {
        #region Methods

        [NotNull]
        Func<T, TResult> Convert<T, TResult>([NotNull] string name);

        [NotNull]
        Func<T1, T2, TResult> Convert<T1, T2, TResult>([NotNull] string name);

        [NotNull]
        Func<T1, T2, T3, TResult> Convert<T1, T2, T3, TResult>([NotNull] string name);

        [NotNull]
        Func<T1, T2, T3, T4, TResult> Convert<T1, T2, T3, T4, TResult>([NotNull] string name);

        #endregion
    }
}